<?php
namespace app\manage\logic;

use think\Db;

// 自定义基础模型类
class BaseLogic
{
    // 自定义连接池
    protected $dbPond = [];
    // model池
    protected $modelPond = [];

    use \app\manage\traits\SendData;

    // 返回查询对象
    protected function db (): \think\db\Query
    {
        $key = $this->name;
        return $this->dbPond[$key] ?? $this->dbPond[$key] = Db::name($this->name);
    }
    // 返回model对象
    protected function model (string $path, array $param = []): \app\manage\model\BaseModel
    {
        $key = md5($path . serialize($param));
        return $this->modelPond[$key] ?? $this->modelPond[$key] = new $path($param);
    }
    /*用于查询条件的赋值  ($data,['name'=>'like'])
    若不用于搜索框类的查询 例如使用db进行查询时，在使用该方法时，要先进行基础的数据验证
    例： db查询商品详情时，goods_id 为0 时，不参与查询条件，故在调用方法时先进行验证goods_id为大于0
    若有status,status采用数组形式 'status'=>'in'  ($data['status'] = ['0'])
    */
    protected function searchWhere (array $data, array $search = []): array
    {
        $res = [];
        if($search){
            foreach ($search as $k => $v) {
                if(isset($data[$k]) && $data[$k]){
                    $res[$k] = $v === 'like' ? ['like','%'.$data[$k].'%'] :  [$v, $data[$k]];
                }
            }
        }
        return $res;
    }

}
